package com.lkc.util; // 定义包路径

import cn.hutool.jwt.JWTUtil; // 导入Hutool JWT工具类

import java.util.Map; // 导入Map接口

/**
 * TokenUtil类 - JWT Token工具类
 */
public class TokenUtil {
    /**
     * 获取token（注：此注释描述不准确，应为根据token获取指定key的值）
     * @param token JWT token字符串
     * @param key 要获取的载荷键名
     * @return 指定键对应的载荷值
     */

    // 签名密钥，用于JWT的签名和验证
    private static final String TOKEN_KEY = "lkc";

    /**
     * 生成JWT Token
     * @param id 用户ID
     * @param role 用户角色
     * @return 生成的JWT Token字符串
     */
    public static String getToken(Integer id,String role) {
        // 创建载荷映射，包含用户ID和角色信息
        Map map = Map.of(SYS.TOKEN_KEY_ID,id, SYS.TOKEN_KEY_ROLE,role);
        // 使用载荷和签名密钥创建JWT Token
        return JWTUtil.createToken(map,TOKEN_KEY.getBytes());
    }

    /**
     * 验证JWT Token的有效性
     * @param token 待验证的JWT Token
     * @return 验证通过返回true，否则返回false
     */
    public static boolean verify(String token) {
        // 使用签名密钥验证Token
        return JWTUtil.verify(token,TOKEN_KEY.getBytes());
    }

    /**
     * 从JWT Token中获取指定key的载荷值
     * @param token JWT Token字符串
     * @param key 要获取的载荷键名
     * @return 指定键对应的载荷值
     */
    public static Object getOption(String token,String key){
        // 解析Token并获取指定键的载荷值
        return JWTUtil.parseToken(token).getPayload(key);
    }
}
